xilinx IOBUF使用详解 | 您所在的位置:网站首页 › vhdl buffer怎么用 › xilinx IOBUF使用详解 |
在vivado中,连接的管脚的信号一般都会自动添加OBUF或IBUF。 但是对于inout类型的接口,不会主动添加IOBUF,因为in/out切换需要控制信号,需要用户自己分配好。 在Language Template中能找到IOBUF的标准实例: // IOBUF: Single-ended Bi-directional Buffer // All devices // Xilinx HDL Language Template, version 2017.2 IOBUF #( .DRIVE(12), // Specify the output drive strength .IBUF_LOW_PWR("TRUE"), // Low Power - "TRUE", High Performance = "FALSE" .IOSTANDARD("DEFAULT"), // Specify the I/O standard .SLEW("SLOW") // Specify the output slew rate ) IOBUF_inst ( .O(O), // Buffer output .IO(IO), // Buffer inout port (connect directly to top-level port) .I(I), // Buffer input .T(T) // 3-state enable input, high=input, low=output );我们现在实例化一个叫IIC的双向口 IOBUF #( .DRIVE(12), // Specify the output drive strength .IBUF_LOW_PWR("TRUE"), // Low Power - "TRUE", High Performance = "FALSE" .IOSTANDARD("DEFAULT"), // Specify the I/O standard .SLEW("SLOW") // Specify the output slew rate ) IOBUF_inst ( .O(sda_i), // Buffer output(user input) .IO(iic_sda), // Buffer inout port (connect directly to top-level port) .I(sda_o), // Buffer input(user output) .T(sda_o) // 3-state enable input, high=input, low=output ); 注:sda_o拉高就是设置为输入,总线空闲的意思 特别注意:(1)原语中的O/I都是针对这个BUF来说的,不是针对管脚,务必注意。 我们把 .IO() 端口当成pad管脚一侧,则: (2)需要输出到io的内部信号填入到 .I(),通过OBUF缓冲输出到.IO()管脚,也就是输出的信号用户需要先输入到IOBUF,IOBUF 帮我们输出的FPGA PAD管脚; (3)从.IO()管脚输入进来的信号经过IBUF缓冲到 .O()内部信号,也就是输入的信号IOBUF 会为我们处理好输出来给用户使用。 (4)输入信号想要正确,那么这个时候的OBUF必须是高阻z,也就是 .T()要有效, .T() 填管脚input的使能条件,即让输出无效,这里是read。 1.本文部分素材来源网络,版权归原作者所有,如涉及作品版权问题,请与我联系删除。 2.未经原作者允许不得转载本文内容,否则将视为侵权; 3.转载或者引用本文内容请注明来源及原作者; 4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。 下面是我的个人微信公众号,关注【一个早起的程序员】精彩系列文章每天不断。
|
CopyRight 2018-2019 实验室设备网 版权所有 |